
import Request from '../request.js'

/**
 * 封装请求层
 */
class DevRequest extends Request {
	
	constructor() {
		super()
		this.pathConf = {
			'test': 'https://www.ljyjy.top',
			'pro': 'https://www.linjuyijiayi.com',
			'local': 'http://192.168.4.67:3000'
		}
	}
	/**
	 * 打点业务发送常规消息
	 * @param {Object} src 打点业务的 URL 地址（带参数）
	 */
	sendInfo(src, reqType) {
		let path = this.pathConf[reqType]
		let img = new Image()
		let date = new Date()
		img.src = path + src + '&type=info&time=' + date.getTime()
	}
	
	/**
	 * 打点业务发送 error 消息
	 * @param {Object} src 打点业务的 URL 地址（带参数）
	 */
	sendError(src, reqType) {
		let path = this.pathConf[reqType]
		let img = new Image()
		let date = new Date()
		img.src = path + src + '&type=error&time=' + date.getTime()
	}
	
	/**
	 * 打点业务通用方法
	 * @param {Object} src 打点业务的 URL 地址
	 * @param {Object} type 打点业务类型
	 * @param {Object} page 当前页面
	 * @param {Object} method 用户行为
	 * @param {Object} info 消息
	 * @param {Object} user 用户
	 */
	send(src, type, page, method, info, user, reqType) {
		let path = this.pathConf[reqType]
		let img = new Image()
		let date = new Date()
		img.src = path + src + '&type=' + type + '&time=' + date.getTime() + '&page=' + page + '&method=' + method + '&info=' + info + '&user=' + user
	}
	
	/**
	 * ajax GET 请求方式
	 * @param {Object} url 请求地址
	 * @param {Object} option 参数
	 */
	get(url, option, reqType) {
		let path = this.pathConf[reqType]
		let p = new Promise(function(resolve, reject) {
			uni.request({
				url: path + url,
				method: 'GET',
				dataType: 'json',
				data: option,
				success: function(result) {
					resolve(result.data)
				},
				fail: function(err) {
					reject(err)
				}
			})
		})
		return p
	}
	
	/**
	 * ajax POST 请求方式
	 * @param {Object} url 请求地址
	 * @param {Object} option 参数
	 */
	post(url, option, reqType) {
		let path = this.pathConf[reqType]
		let p = new Promise(function(resolve, reject) {
			uni.request({
				url: path + url,
				method: 'POST',
				dataType: 'json',
				data: option,
				success: function(result) {
					resolve(result.data)
				},
				fail: function(err) {
					reject(err)
				}
			})
		})
		return p
	}
	
	/**
	 * ajax PUT 请求方式
	 * @param {Object} url 请求地址
	 * @param {Object} option 参数
	 */
	put(url, option, reqType) {
		let path = this.pathConf[reqType]
		let p = new Promise(function(resolve, reject) {
			uni.request({
				url: path + url,
				method: 'PUT',
				dataType: 'json',
				data: option,
				success: function(result) {
					resolve(result.data)
				},
				fail: function(err) {
					reject(err)
				}
			})
		})
		return p
	}
	
	/**
	 * ajax DELETE 请求方式
	 * @param {Object} url 请求地址
	 * @param {Object} option 参数
	 */
	delete(url, option, reqType) {
		let path = this.pathConf[reqType]
		let p = new Promise(function(resolve, reject) {
			uni.request({
				url: path + url,
				method: 'DELETE',
				dataType: 'json',
				data: option,
				success: function(result) {
					resolve(result.data)
				},
				fail: function(err) {
					reject(err)
				}
			})
		})
		return p
	}
	
}

export default DevRequest
